package com.liangsong.designpattern.singleton;

/**
 * @author liangsong
 * @version 1.0 2025/1/9
 * 静态内部类【推荐】
 *  * 这种方式跟饿汉式方式采用的机制类似，但又有不同。
 *  * 两者都是采用了类装载的机制来保证初始化实例时只有一个线程。
 *  * 不同的地方:
 *  * 在饿汉式方式是只要Singleton类被装载就会实例化,
 *  * 内部类是在需要实例化时，调用getInstance方法，才会装载Singleton类
 *  * 优点：避免了线程不安全，延迟加载，效率高。
 * */
public class StaticSingleton {

    private static class Singleton{
        private static final StaticSingleton staticSingleton = new StaticSingleton();
        public static StaticSingleton getInstance(){
            return staticSingleton;
        }

    }

    public static StaticSingleton getInstance(){
        return Singleton.getInstance();
    }

    private StaticSingleton(){

    }
    public void test(){
        System.out.println(this.getClass().getName());
    }
}
